Omnichannel retailing

ABSTRACT

Example embodiments are directed to systems and method to facilitate omnichannel retailing. A networked system determines a location of the user device within a store and accesses a map of the store. An item from a list of one or more items is identified, whereby the item has a plurality of locations within the store. A first location of the item from the plurality of locations is selected. The networked system causes display, on a user interface on the user device, of the location of the user device and the first location of the item and causes display of a user interface element that is operable to receive user selection of a different location from the plurality of locations. In response to receiving the user selection, the networked system ceases display of the first location on the map and causes display of the different location on the map.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.16/397,548, filed Apr. 29, 2019, which is a continuation of U.S.application Ser. No. 14/096,945, filed Dec. 4, 2013, which claims thebenefit of U.S. Provisional Application No. 61/861,320, filed Aug. 1,2013, each of which hereby incorporated by reference in its entirety.

TECHNICAL FIELD

The subject matter disclosed herein generally relates to the processingof data. Specifically, the present disclosure addresses systems andmethods for omnichannel retailing.

BACKGROUND

A user may purchase items in a physical retail store or from an onlinemarketplace. An online marketplace may dynamically generate offers,promotions, or discounts for the user. A physical retail store maydistribute coupons by direct mail, publication in periodicals, orplacement in the store.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings.

FIG. 1 is a block diagram illustrating an example of a networkenvironment suitable for omnichannel retailing, according to exampleembodiments.

FIG. 2 is a diagram illustrating an example store layout, according toexample embodiments.

FIG. 3 is a block diagram illustrating data flows within a networkenvironment suitable for omnichannel retailing, according to exampleembodiments.

FIG. 4 is a block diagram illustrating components of an enterprisemachine for omnichannel retailing, according to example embodiments.

FIG. 5 is a block diagram illustrating components of a user device foromnichannel retailing, according to example embodiments.

FIG. 6 is a flow diagram illustrating operations of omnichannelretailing, according to example embodiments.

FIG. 7 is a flow diagram illustrating operations of omnichannelretailing, according to example embodiments.

FIG. 8 is a flow diagram illustrating operations of omnichannelretailing, according to example embodiments.

FIG. 9 is a diagram illustrating a mechanical device able to hold adevice suitable for omnichannel retailing, according to exampleembodiments.

FIG. 10 is a diagram illustrating a mechanical device able to hold adevice suitable for omnichannel retailing, according to exampleembodiments.

FIG. 11 is a diagram illustrating a mechanical device able to hold adevice suitable for omnichannel retailing, according to exampleembodiments.

FIG. 12 is a simplified block diagram of a machine in an example form ofa computing system within which a set of instructions for causing themachine to perform any one or more of the methodologies discussed hereinmay be executed.

DETAILED DESCRIPTION

Example methods and systems are directed to omnichannel retailing.Examples merely typify possible variations. Unless explicitly statedotherwise, components and functions are optional and may be combined orsubdivided, and operations may vary in sequence or be combined orsubdivided. In the following description, for purposes of explanation,numerous specific details are set forth to provide a thoroughunderstanding of example embodiments. It will be evident to one skilledin the art, however, that the present subject matter may be practicedwithout these specific details.

A server may access information (e.g., from a database) regardingproducts, promotions (e.g., sales, discounts, buy one get one freeoffers, and the like), stores, and customers, as well as relationshipsbetween each of these types of information. The information may bestored on a per-retailer basis, aggregated across retailers, or both.

A device may determine its location (e.g., using a global positioningservice (“GPS”), using Wi-Fi triangulation, etc.) within a store anddisplay the location on a map of the store. The map of the store may beretrieved from the server.

The device may receive a shopping list of items the user desires topurchase. For example, the user may enter a list of items into thedevice using text fields of a user interface or selecting itemspresented in a user interface. As another example, the user may selectthe items using a different device (e.g., a personal computer connectedto a web server using the Internet) and the list of items may betransmitted to the device within the store.

The device may then display the location of desired items on the map ofthe store. In some example embodiments, this is accomplished byretrieving the location of the items from the server. When an item islocated in multiple locations, for example in an ordinary location in aparticular aisle and also in a promotional location near the checkoutlanes, the device may display one or more of the locations for the item.In some example embodiments, the device may present a suggested routethrough the store by which the user can find all of the items on theshopping list. The suggested route may be generated by the device ortransmitted to the device from another computer.

The device may present recommendations for products to the user based onitems near the device, items on the shopping list, or items identifiedby the user. For example, if the shopping list includes hot dogs, thedevice may present a recommendation for hot dog buns. The recommendationmay be generated by the device or generated on a server and transmittedto the device for presentation to the user on a display of the device.

The device may have the ability to identify items (e.g., by scanningbarcodes or quick-response (“QR”) codes, or by taking a picture). Thedevice may communicate with the server to gather information about anidentified item (e.g., price, popularity, other items frequentlypurchased with or instead of the item, and the like). The identificationof items may be performed on a server working with the device. Forexample, the device may take a photo of an item and transmit the imageto a server. The server may receive the image, identify the item, andtransmit identification information for the item (e.g., a numericidentifier, a stock photo, or a name) to the device. The device maydisplay the received identification information to the user or store itfor later use.

FIG. 1 is a network diagram illustrating a network environment 100suitable for omnichannel retailing, according to some exampleembodiments. The network environment 100 includes a network-basedcommerce system 105 and user devices 130 and 150, all communicativelycoupled to each other via a network 190. The network-based commercesystem 105 may comprise multiple servers (e.g., an enterprise machine110) and databases (e.g., an item database 115). Devices within thesystem 105 may communicate via the network 190 or another network. Thesystem 105 may present a single interface to the network 190. Theenterprise machine 110 and the user devices 130 and 150 may each beimplemented in a computer system, in whole or in part, as describedbelow with respect to FIG. 12.

The user device 130 or 150 may be a portable device (e.g., vehiclecomputer, a tablet computer, a navigational device, a portable mediadevice, a smart phone, a smart watch, or a pair of smart glasses)capable of being operated by a user in a store. The user device 130 or150 may be in communication with the network based enterprise machine110. The enterprise machine 110 may provide information regardingproducts in the store, the layout of the store, and promotions relatedto products in the store to the user device 130 or 150. The user device130 or 150 may display any of the information received from theenterprise machine 110. Additionally, the user device 130 or 150 maydisplay information stored on the device. For example, the user device130 or 150 may be running a dedicated app that stores informationlocally or a thin client app that presents information but does notperform significant processing or storage tasks.

In some example embodiments, the store is a warehouse, and the user isgathering items for shipment to customers. For example, one or morecustomers may have placed orders for items distributed throughout thewarehouse. The user may be tasked with gathering the ordered items andbringing them to a location for packaging and shipment.

In an example embodiment, the user device 130 or 150 presents a map ofthe store to the user. The current location of the device, the locationof items pre-selected by the user, and the location of items recommendedto the user may be displayed on the map. Additionally, promotionalinformation may be displayed. For example, based on the location of thedevice and the layout of the store, items near the device can bedetermined. Items near the device can be cross-indexed with apromotional database to determine the promotions that apply to itemsnear the device. Those promotions may be displayed to the user.

Also shown in FIG. 1 are users 132 and 152. One or both of the users 132and 152 may be a human user, a machine user (e.g., a computer configuredby a software program to interact with the user device 130), or anysuitable combination thereof (e.g., a human assisted by a machine or amachine supervised by a human). The user 132 is not part of the networkenvironment 100, but is associated with the user device 130 and may be auser of the user device 130. For example, the user device 130 may be avehicle computer, a tablet computer, a navigational device, a portablemedia device, a smart phone, a smart watch, or a pair of smart glassesbelonging to the user 132. Likewise, the user 152 is not part of thenetwork environment 100, but is associated with the user device 150. Asan example, the user device 150 may be a vehicle computer, a tabletcomputer, a navigational device, a portable media device, a smart phone,a smart watch, or a pair of smart glasses belonging to the user 152.

Any of the machines, databases, or devices shown in FIG. 1 may beimplemented in a general-purpose computer modified (e.g., configured orprogrammed) by software to be a special-purpose computer to perform thefunctions described herein for that machine, database, or device. Forexample, a computer system able to implement any one or more of themethodologies described herein is discussed below with respect to FIG.12. As used herein, a “database” is a data storage resource and maystore data structured as a text file, a table, a spreadsheet, arelational database (e.g., an object-relational database), a triplestore, a hierarchical data store, or any suitable combination thereof.Moreover, any two or more of the machines, databases, or devicesillustrated in FIG. 1 may be combined into a single machine, and thefunctions described herein for any single machine, database, or devicemay be subdivided among multiple machines, databases, or devices.

The network 190 may be any network that enables communication between oramong machines, databases, and devices (e.g., the enterprise machine 110and the user device 130). Accordingly, the network 190 may be a wirednetwork, a wireless network (e.g., a mobile or cellular network), or anysuitable combination thereof. The network 190 may include one or moreportions that constitute a private network, a public network (e.g., theInternet), or any suitable combination thereof.

FIG. 2 is a diagram 200 illustrating an example store layout, used insome example embodiments. In this store layout, two store entrances 210and 220 can be seen as well as the aisles between sections of the store(e.g., the aisle 230). Different areas of the store may correspond todifferent item categories (e.g., sporting goods, groceries, toiletries,etc.). The store layout may be stored in the enterprise machine 110prior to transmission to the user device 130 or 150 for display to theuser.

FIG. 3 is a block diagram illustrating data flows within a store networkenvironment 300 suitable for omnichannel retailing, according to someexample embodiments. The network environment 300 includes a locationserver 310, a client device 320, a database 330, a store server 340, anda web server 350, all communicatively coupled to each other via one ormore networks. The servers, databases, and devices 310-350 may each beimplemented in a computer system, in whole or in part, as describedbelow with respect to FIG. 12.

A location server 310 may determine al cation of a device (e.g., theuser device 130 or the user device 150) within a store. In some exampleembodiments, the location server 310 determines the location of thedevice using a wireless computer network within the store. For example,if there are multiple wireless routers in the store, it is possible toestimate the distance of the device from each router by measuring thestrength of the wireless signals at the device. Then, usingtriangulation, the location of the device can be determined. Similarly,the location of the device may be triangulated using cell phone towers.In another example embodiment, security cameras in the store use facialrecognition software to identify customers in the store and theirlocations. In this example embodiment, the store's network can beconnected to the security cameras and transmit the location of thecustomer associated with the device to the device. Those of ordinaryskill in the art will recognize that other methods of identifying thelocation of the device may also be used without straying from theinvention. The location server 310 may be part of the store server 340,or may be an independent device.

A client device 320 may be a user device 130 or 150. An applicationrunning on the client device 320 may, using the location server 310,present information about the device location to the user. Theapplication may be a separate app for each retailer or a shared app formultiple retailers. The user may log into the application usingcredentials that are specific to the retailer or using a universalcustomer account. The credentials may be shared with a store server 340.Universal credentials may allow a store server 340 to access a greaterbody of information about the user to consider when creatingrecommendations. For example, rather than only accessing the user'stransactions with the current retailer, all of the user's transactionswith all participating retailers and e-tailers can be considered.

In some example embodiments, when the user logs into the application, aninitial promotion is presented to the user (for example, a percentageoff discount coupon that applies when a certain minimum purchase is madein conjunction with using the application to manage the shopping list)The client application may be integrated with the store's onlinecounterpart, which may include a pick-up-in-store feature. In such acase, the user may be able to have items from the shopping list waitingfor pick up rather than having to find each item individually on thestore shelves.

Data regarding store products and services may be stored in a database330. The database 330 may be physically located at the store andcommunicated via the store's wireless network to the client device 320.By combining information from the location server 310 and the database330, the client device 320 may present information to the user aboutproducts near the device.

The database 330 may contain data regarding a store's physical layout aswell as the distribution of products within that layout. The layoutinformation may be communicated to the store server 340. In turn, theclient device 320 may receive the plan data from the store server 340.Integrating the plan data with the location data from the locationserver 310 and the product data from the database 330, the client device320 can display a map of the store that includes the user's position,general product data, and additional product data. In some cases, aparticular product may be located at multiple locations in a store. Inthese cases, all locations can be shown to the user or only a subset maybe displayed. When only a subset is displayed, a user interface elementmay be presented to allow the user to choose other locations to display.For example, one location may be displayed at a time along with a “Next”button. Each time the “Next” button is pressed, a different location maybe displayed until all locations have been cycled through.

The store server 340 may further be in communication with a web server350. For example, the store may have a corresponding e-commerce siterunning on the web server 350. An e-commerce site running from one ormore web servers may be called a “webstore.” The store may have abusiness relationship with an e-commerce site such as eBay, and be incommunication with a web server 350 running the independent e-commercesite. Information regarding products available for purchase from thestore running on the web server 350 may be communicated to the storeserver 340, and from the store server 340 to the client device 320 forpresentation to a user. For example, if the store is out of stock for aparticular item, the user may be presented with an option to buy theproduct from the store's webstore. As another example, a recommendationof an item for a user may be determined based on the user's personalprofile (e.g., purchasing history, current shopping list, etc.) andrecommended to the user to purchase from the web server 350 or thephysical store. The webstore running on the web server 350 may be adedicated store corresponding to the physical store, or it may be anelectronic storefront within a larger electronic store. In some exampleembodiments, information about the user's purchasing history is acquiredfrom sources other than or in addition to the store. For example, theuser may have an eBay shopping history that can be used to providerecommendations to items of interest.

FIG. 4 is a block diagram illustrating components of the enterprisemachine 110, according to some example embodiments. The enterprisemachine 110 is shown as including a communication module 410, a pathcreation module 420, a cross-sell module 430, a social module 440, anaggregation module 450, and a storage module 460, all configured tocommunicate with each other (e.g., via a bus, shared memory, or aswitch). Any one or more of the modules described herein may beimplemented using hardware (e.g., a processor of a machine) or acombination of hardware and software. For example, any module describedherein may configure a processor to perform the operations describedherein for that module. Moreover, any two or more of these modules maybe combined into a single module, and the functions described herein fora single module may be subdivided among multiple modules. Furthermore,according to various example embodiments, modules described herein asbeing implemented within a single machine, database, or device may bedistributed across multiple machines, databases, or devices. Forexample, in one example embodiment, the path creation module 420 may beimplemented in the user device 130 or 150 rather than the enterprisemachine 110, or partially implemented in the user device 130 or 150 andpartially implemented in the enterprise 110, communicating as necessaryvia the network 190.

The communication module 410 may control communication with the clientdevice 320 running on the user device 130 or 150. The communicationmodule 410 may also communicate with the item database 115, the webserver 350, and the store database 330. In some example embodiments, thecommunication module 410 acts as a go-between, passing informationbetween the various devices with which the enterprise machine 110 is incommunication. The communication module 410 may also send the data tothe storage module 460, for storage on the enterprise machine 110.

The path creation module 420 may create a path for a user through astore. For example, the store plan may be received from the database330, and the user's shopping list may be received from the user device130 or 150. The path creation module 420 may then create a plan to takethe user through the store to the selected items. The path chosen may bethe most efficient path or may be designed to guide the user pastselected areas of the store (e.g., promotional displays, seasonal items,etc.), or a combination thereof.

The cross-sell module 430 may identify items of interest to a user basedon items in the user's shopping list or based on items scanned by theuser. The user may scan items other than those on the shopping list. Asan example of a recommendation, based on a report from the aggregationmodule 450 that a first item is often purchased with a second item andthat the second item is in the user's shopping list, the cross-sellmodule 430 may generate a recommendation for the first item to the user.The recommendation may be transmitted via the communication module 410to the user device 130 or 150, and displayed to the user on a displaydevice (e.g., an LCD screen) of the user device 130 or 150 by thedisplay module 520. The user may choose to share the recommended item,the items in the shopping list, a scanned item, or any combinationthereof via social media (e.g., Facebook, Twitter, Pinterest, etc.)using the social module 440.

After the user scans an item, one or more cross-sell items may beidentified based on the scanned item, the user's history, aggregateduser data, or any suitable combination thereof. The identifiedcross-sell items may be presented to the user on the display of thedevice. For example, the identified cross-sell items may be displayed ina column on the fight-hand side of the screen. The user may select across-sell item and click a button (e.g., a button labeled “Take methere.”). In response to activating the button, the device may add thecross-sell item to the map and plot a path from the device's currentposition to the location of the cross-sell item.

FIG. 5 is a block diagram illustrating components of the user device130, according to some example embodiments. The user device 130 is shownas including a communication module 510, a display module 520, across-sell module 530, a social module 540, a location module 550, and astorage module 560, all configured to communicate with each other (e.g.,via a bus, shared memory, or a switch). Any one or more of the modulesdescribed herein may be implemented using hardware (e.g., a processor ofa machine) or a combination of hardware and software. For example, anymodule described herein may configure a processor to perform theoperations described herein for that module. Moreover, any two or moreof these modules may be combined into a single module, and the functionsdescribed herein for a single module may be subdivided among multiplemodules. Furthermore, according to various example embodiments, modulesdescribed herein as being implemented within a single machine, database,or device may be distributed across multiple machines, databases, ordevices.

The communication module 510 may communicate with the store's network,the enterprise machine 110, the Internet, or any suitable combinationthereof. Information received via the communication module 510 may bepresented via the display module 520, stored via the storage module 560,or both. The communication module 510 may also be used to retrieveinformation regarding items in the store such as user reviews andrelated items. For example, the user may use a camera on the user device130 to take a picture of a bar code, a QR code, or the product itself.The user device 130 can then use the image to identify the product,transmit the image to the enterprise machine 110 to identify theproduct, or communicate with the store's local network to identify theproduct. Once the product is identified, information about the productcan be gathered (e.g., from the item database 115) and sent to the userdevice 130 for presentation to the user.

The cross-sell module 530 may identify items of interest to the userbased on the user's shopping list, current location (provided by thelocation module 550), or a scanned item. In some example embodiments,the only one of the cross-sell module 530 and the cross-sell module 430is implemented. In other example embodiments, the cross-sell module 430and the cross-sell module 530 are configured to generate different typesof recommendations. For example, the cross-sell module 430 may beconfigured to generate recommendations based on the user's pastpurchases while the cross-sell module 530 is configured to generaterecommendations based on items scanned by the user in the store. Theitems of interest may be presented to the user via the display module520.

The social module 540 may be used to share items on the shopping list orrecommended items via social media. For example, the user may select oneor more social networks and post information on the chosen socialnetworks about the item (e.g., name of the product, brand, size, color,etc.) as well as the store in which the user is shopping (e.g., name ofthe store, location of the store, hours, phone number, etc.). In someexample embodiments, the only one of the social module 530 and thesocial module 430 is implemented. In other example embodiments, thesocial module 530 is configured to receive input from the user andcommunicate with the social module 430, while the social module 430 isconfigured to communicate with the selected social networks.

The location module 550 can determine the location of the user device130. For example, the location module 550 may use a GPS sensor todetermine the position of the device. As another example, the locationmodule 550 may use Wi-Fi triangulation to determine the position of thedevice. In another embodiment, inertial sensors are used to determinethe position of the device. The location module 550 may be incommunication with the location server 310. For example, the locationserver 310 may identify the location of the user device 130 and transmitit, via the communication module 510 to the location module 550. Asanother example, the location server 310 may gather data useful to thedetermination of the location of the user device 130 and transmit thatdata to the location module 550, which may use the data to determine thelocation. To illustrate, the location server 310 may determine whichWi-Fi access points are able to detect the user device 130 and transmitthe locations of those access points to the location module 550. Thelocation module 550 may use those locations along with detection of therelative strength of the wireless signal from each of those accesspoints to triangulate the position of the user device 130. In stillanother example, the location server 310 is not used, and allmeasurements and calculations related to determining the location of thedevice 130 are performed by the location module 550.

The storage module 560 can store and retrieve data for use by the othermodules 510-550. For example, the storage module 560 may access a filesystem on a hard drive or tables in a relational database to store andretrieve data. The physical device storing the data may be part of theuser device 130 or accessed over a network 190.

FIG. 6 is a flowchart illustrating operations of a device (e.g., userdevice 130 or 150) in performing a method 600 of omnichannel retailing,according to some example embodiments. Operations in the method 600 maybe performed by the user device 130 or 150, using modules describedabove with respect to FIG. 5.

In operation 610, the device may display a user interface to a user,through which the user may enter a list of items. For example, the usermay type in the name of each item, select the items from a drop downlist, navigate through a tree of categories to find the item, or anysuitable combination thereof. Alternatively, a list offrequently-purchased items for the user may be stored in the cloud(e.g., in part of the network-based commerce system 105) and the entirelist selected at once by the user. For example, the user may create alist on a home computer and upload the list to the cloud before going tothe store, then access the list from the user device 130 or 150 byreceiving the list from the cloud.

In operation 620, the device receives the list of items. For example, ifthe list of items is stored in the cloud, the user may select the nameof the list from a drop-down menu in a web-based user interfacepresented in operation 610. After selecting the name of the list, thecontents of the list may be transmitted from a server (e.g., theenterprise machine 110) to the user device 130 or 150, which receivesthe list. The list may be received as customized data objects, JSONdata, HTML files, or XML files, as just a few examples.

In operation 630, the device receives a map of the store. For example,the device may receive an image (e.g., a graphics interchange format(“GIF”) image, a joint photographic experts group (“JPEG”) image, or avector image) depicting a map of the store. The device may also receivedata correlating locations in the image of the store to real-worldcoordinates. For example, the GPS location of each corner of the imagemay be received, allowing the device to calculate (e.g., using linearinterpolation) the GPS coordinates of each pixel in the image. Inanother example, the coordinates of elements in the image (e.g., theendpoints of vectors in a vector image) directly correspond toreal-world coordinates. To illustrate, an aisle in a store may extendfrom latitude 45.12342 N to latitude 45.12351 N at longitude 28.73670,and thus be represented by a vector extending from (28.73670, 45.12342)to (28.73670, 45.12351).

In operation 640, the location of the device is identified. For example,a GPS sensor in the device may be used to determine the longitude andlatitude of the device or Wi-Fi triangulation may be used to determinethe location of the device in the store. To illustrate, the device maycommunicate with a plurality of Wi-Fi devices in the store, each ofwhich is able to measure the strength of the signal from the user device130. The strength of the signal at each Wi-Fi device may correspond tothe distance between the user device 130 and the Wi-Fi device. The Wi-Fidevices may communicate with a central server, which determines thelocation of the user device 130 in the store and communicates thelocation of the user device 130 to the user device 130.

In operation 650, the device displays the location of the device and theitems in the list on the map of the store. For example, the location ofthe device may be superimposed as a red dot or a black “X” on the mapand the location of each item may be presented as a yellow dot or otherspecified logo or image (e.g., a logo associated with the store). Insome example embodiments, only the next item on the list is displayed.For determining the next item, the list may be kept in an order it wasentered by the user, sorted, or ordered to control the path taken by theuser. A sorted list is organized by a sort criterion, such as analphabetical sort, price sort, or distance sort (e.g., distance of theitem from the user device 130's present location). As an example of alist ordered to control the path taken by the user, the items in thelist may be ordered to reduce the total distance travelled to gather allof the items.

FIG. 7 is a flowchart illustrating operations of a device (e.g., userdevice 130 or 150) in performing a method of omnichannel retailing,according to some example embodiments. Operations in the method 700 maybe performed by the user device 130 or 150, using modules describedabove with respect to FIG. 5.

In operation 710, the user device 130 or 150 may receive a map of thestore (e.g., from the enterprise machine 110), as described above withrespect to operation 630. For example, the communication module 510 mayreceive map information from the enterprise machine 110.

In operation 720, the user device 130 or 150 may identify its locationwithin the store. For example, the location module 550 may access a GPSsensor in the device to determine the longitude and latitude of thedevice. Alternatively, the location module 550 may use Wi-Fitriangulation may be used to determine the location of the device in thestore. To illustrate, the device may communicate with a plurality ofWi-Fi devices in the store, each of which is able to measure thestrength of the signal from the user device 130. The strength of thesignal at each Wi-Fi device may correspond to the distance between theuser device 130 and the Wi-Fi device. The Wi-Fi devices may communicatewith a location server 310, which determines the location of the userdevice 130 in the store and communicates the location of the user device130 to the user device 130.

In operation 730, the user device 130 or 150 may present the map on adisplay device, including the location of the device within the store.Accordingly, the display module 520 may present a graphically layout ofthe store (e.g., the map received in operation 710).

In operation 740, the user device 130 or 150 may identify the locationof a nearby product based on the location of the device within thestore. In example embodiments, the cross-sell module 530 of the userdevice 130 may perform this operation. For example, the user may bebrowsing the aisles of the store, and a product in the same aisle as theuser or in an adjacent aisle to the user may be identified.

In operation 750, an available promotion for the nearby product may bedisplayed on the display device. The promotion may have beenpre-determined (e.g., a sale on products by a particular manufacturer)or dynamically generated and presented to the user (e.g., based on priorpurchases by the user) by the cross-sell module 430 or the cross-sellmodule 530.

FIG. 8 is a flowchart illustrating operations of a device (e.g., userdevice 130 or 150) in performing a method of omnichannel retailing,according to some example embodiments. Operations in the method 800 maybe performed by the user device 130 or 150, using modules describedabove with respect to FIG. 5.

In operation 810, the device may receive a map of the store (e.g., fromthe enterprise machine 110), as described above with respect tooperation 630. For example, the communication module 510 may receive mapinformation from the enterprise machine 110.

In operation 820, the device may identify its location within the store(for example, using the location server 310 or the location module 550).For example, the location module 550 may access a GPS sensor in thedevice to determine the longitude and latitude of the device.Alternatively, the location module 550 may use Wi-Fi triangulation maybe used to determine the location of the device in the store. Toillustrate, the device may communicate with a plurality of Wi-Fi devicesin the store, each of which is able to measure the strength of thesignal from the user device 130. The strength of the signal at eachWi-Fi device may correspond to the distance between the user device 130and the Wi-Fi device. The Wi-Fi devices may communicate with a locationserver 310, which determines the location of the user device 130 in thestore and communicates the location of the user device 130 to the userdevice 130.

In operation 830, the device may present the map on a display device,including the location of the device within the store. For example, thelocation of the device may be superimposed as a red dot or a black “X”on the map and the location of each item may be presented as a yellowdot or appropriate image (e.g., a logo associated with the store or animage of the item. In some example embodiments, only the next item onthe list is displayed. For determining the next item, the list may bekept in an order it was entered by the user, sorted, or ordered tocontrol the path taken by the user. A sorted list is organized by a sortcriterion, such as an alphabetical sort, price sort, or distance sort(e.g., distance of the item from the user device 130's presentlocation). As an example of a list ordered to control the path taken bythe user, the items in the list may be ordered to reduce the totaldistance travelled to gather all of the items.

In operation 840, the user device 130 or 150 may identify the locationof a nearby product based on the location of the device within thestore. For example, the user may be browsing the aisles of the store,and a product in the same aisle as the user or in an adjacent aisle tothe user may be identified by the cross-sell module 430 or thecross-sell module 530. For example, the product may be frequentlypurchased with or instead of another item on the user's shopping list,frequently purchased by the user, recommended by the user's friends on asocial media site, or any suitable combination thereof.

In operation 850, the device may present an option to share the producton social media and receive an indication from the user to accept theoption. For example, an icon may be presented by the social module 540that is operable to cause the product to be shared on a social mediasite corresponding to the icon.

In operation 860, after receiving the indication to share, the devicemay share information about the recommended product via social media.For example, the user's social media credentials (e.g., user name andpassword) may be stored on the device or on the enterprise machine 110.The social module 540 may communicate with the enterprise machine tocause the enterprise machine 110 to connect to a social media site onthe user's behalf and post information about the product.

FIGS. 9-11 are diagrams 900, 1000, and 1100 illustrating a plurality ofholders 910 able to hold a device suitable for omnichannel retailing,according to some example embodiments.

The holders 910 may be attached to a shopping cart 920 by any suitablefastener (e.g., clips, hooks, a hook-and-loop system such as Velcro,glue, or any suitable combination thereof). The user device 130 may beplaced in the holder 910 such that the user can see the display area ofthe user device 130 while pushing the cart 920 as shown in FIG. 10 andFIG. 11. The user device 130 may be placed on a ledge of the holder 910,clipped into the holder 910, attached with a hook-and-loop fastener tothe holder 910, or any suitable combination thereof. In some exampleembodiments, the holder 910 is designed to avoid obstructing a cameralens of the user device 130. The holder 910 may hold the camera so thatit points in a certain direction. The camera may be used to provide avideo feed or to take periodic snapshots of the store. By analyzing thevideo teed or the generated photos, the position of the user device 130may be determined in accordance with one embodiment. For example, if thecamera is adjusted to aim at items on the bottom shelf three feet aheadof and to the right of the cart, then identifying the items photographedwill give the position of the cart within the store. As another example,the camera may be adjusted to aim at the floor of the store, andidentify marks may be placed on or embedded into the floor.

The holder 910 may have multiple slots for holding devices of differentsizes and in different orientations. For example, a tablet may be heldin either landscape or portrait orientation, smaller slots may be usedfor a smartphone or mini-tablet than a tablet, and so forth.Alternatively, the holder 910 may be adjustable to accommodate devicesof various sizes and dimensions. The holder 910 may be attached to thehandle of the cart, the body of the cart, or both.

According to various example embodiments, one or more of themethodologies described herein may facilitate providing information to ashopper in a physical retail store regarding items on a shopping list orrecommended items. Moreover, one or more of the methodologies describedherein may facilitate the use of a mobile computing device whileshopping in a physical retail store. Additionally, one or more of themethodologies described herein may facilitate the user's interactionwith social media while shopping in a physical retail store.Furthermore, one or more of the methodologies described herein mayfacilitate the user's ability to efficiently navigate a physical retailstore or warehouse.

When these effects are considered in aggregate, one or more of themethodologies described herein may obviate a need for certain efforts orresources that otherwise would be involved in omnichannel retailing.Efforts expended by a user in identifying items of interest may bereduced by one or more of the methodologies described herein. Computingresources used by one or more machines, databases, or devices (e.g.,within the network environment 100) may similarly be reduced. Examplesof such computing resources include processor cycles, network traffic,memory usage, data storage capacity, power consumption, and coolingcapacity.

FIG. 12 is a block diagram illustrating components of a machine 1200,according to some example embodiments, able to read instructions from amachine-readable medium (e.g., a machine-readable storage medium, acomputer-readable storage medium, or any suitable combination thereof)and perform any one or more of the methodologies discussed herein, inwhole or in part. Specifically, FIG. 12 shows a diagrammaticrepresentation of the machine 1200 in the example form of a computersystem and within which instructions 1224 (e.g., software, a program, anapplication, an applet, an app, or other executable code) for causingthe machine 1200 to perform any one or more of the methodologiesdiscussed herein may be executed, in whole or in part. In alternativeembodiments, the machine 1200 operates as a standalone device or may beconnected (e.g., networked) to other machines. In a networkeddeployment, the machine 1200 may operate in the capacity of a servermachine or a client machine in a server-client network environment, oras a peer machine in a distributed (e.g., peer-to-peer) networkenvironment. The machine 1200 may be a server computer, a clientcomputer, a personal computer (PC), a tablet computer, a laptopcomputer, a netbook, a set-top box (STB), a personal digital assistant(PDA), a cellular telephone, a smartphone, a wearable computer, a webappliance, a network router, a network switch, a network bridge, or anymachine capable of executing the instructions 1224, sequentially orotherwise, that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include a collection of machines that individually orjointly execute the instructions 1224 to perform all or part of any oneor more of the methodologies discussed herein.

The machine 1200 includes a processor 1202 (e.g., a central processingunit (CPU), a graphics processing unit (GPU), a digital signal processor(DSP), an application specific integrated circuit (ASIC), aradio-frequency integrated circuit (MC), or any suitable combinationthereof), a main memory 1204, and a static memory 1206, which areconfigured to communicate with each other via a bus 1208. The machine1200 may further include a graphics display 1210 (e.g., a plasma displaypanel (PDP), a light emitting diode (LED) display, a liquid crystaldisplay (LCD), a projector, or a cathode ray tube (CRT)). The machine1200 may also include an alphanumeric input device 1212 (e.g., akeyboard), a cursor control device 1214 (e.g., a mouse, a touchpad, atrackball, a joystick, a motion sensor, or voice-activated controller,or other pointing instrument), a storage unit 1216, a signal generationdevice 1218 (e.g., a speaker), and a network interface device 1220.

The storage unit 1216 includes a machine-readable medium 1222 on whichis stored the instructions 1224 embodying any one or more of themethodologies or functions described herein. The instructions 1224 mayalso reside, completely or at least partially, within the main memory1204, within the processor 1202 (e.g., within the processor's cachememory), or both, during execution thereof by the machine 1200.Accordingly, the main memory 1204 and the processor 1202 may beconsidered as machine-readable media. The instructions 1224 may betransmitted or received over a network 1226 (e.g., network 190) via thenetwork interface device 1220.

As used herein, the term “memory” refers to a machine-readable mediumable to store data temporarily or permanently and may be taken toinclude, but not be limited to, random-access memory (RAM), read-onlymemory (ROM), buffer memory, flash memory, and cache memory. While themachine-readable medium 1222 is shown in an example embodiment to be asingle medium, the term “machine-readable medium” should be taken toinclude a single medium or multiple media (e.g., a centralized ordistributed database, or associated caches and servers) able to storeinstructions. The term “machine-readable medium” shall also be taken toinclude any medium, or combination of multiple media, that is capable ofstoring instructions for execution by a machine (e.g., machine 1200),such that the instructions, when executed by one or more processors ofthe machine (e.g., processor 1202), cause the machine to perform any oneor more of the methodologies described herein. Accordingly, a“machine-readable medium” refers to a single storage apparatus ordevice, as well as “cloud-based” storage systems or storage networksthat include multiple storage apparatus or devices. The term“machine-readable medium” shall accordingly be taken to include, but notbe limited to, one or more data repositories in the form of asolid-state memory, an optical medium, a magnetic medium, or anysuitable combination thereof.

Furthermore, the tangible machine-readable medium is non-transitory inthat it does not embody a propagating signal. However, labeling thetangible machine-readable medium as “non-transitory” should not beconstrued to mean that the medium is incapable of movement the mediumshould be considered as being transportable from one physical locationto another. Additionally, since the machine-readable medium is tangible,the medium may be considered to be a machine-readable device.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied on a machine-readable medium or ina transmission signal) or hardware modules. A “hardware module” is atangible unit capable of performing certain operations and may beconfigured or arranged in a certain physical manner. In various exampleembodiments, one or more computer systems (e.g., a standalone computersystem, a client computer system, or a server computer system) or one ormore hardware modules of a computer system (e.g., a processor or a groupof processors) may be configured by software (e.g., an application orapplication portion) as a hardware module that operates to performcertain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware module may include dedicated circuitry or logic that ispermanently configured to perform certain operations. For example, ahardware module may be a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an ASIC. A hardware module may alsoinclude programmable logic or circuitry that is temporarily configuredby software to perform certain operations. For example, a hardwaremodule may include software encompassed within a general-purposeprocessor or other programmable processor. It will be appreciated thatthe decision to implement a hardware module mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations.

Accordingly, the phrase “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. As used herein,“hardware-implemented module” refers to a hardware module. Consideringembodiments in which hardware modules are temporarily configured (e.g.,programmed), each of the hardware modules need not be configured orinstantiated at any one instance in time. For example, where a hardwaremodule comprises a general-purpose processor configured by software tobecome a special-purpose processor, the general-purpose processor may beconfigured as respectively different special-purpose processors (e.g.,comprising different hardware modules) at different times. Software mayaccordingly configure a processor, for example, to constitute aparticular hardware module at one instance of time and to constitute adifferent hardware module at a different instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multiplehardware modules exist contemporaneously, communications may be achievedthrough signal transmission (e.g., over appropriate circuits and buses)between or among two or more of the hardware modules. In embodiments inwhich multiple hardware modules are configured or instantiated atdifferent times, communications between such hardware modules may beachieved, for example, through the storage and retrieval of informationin memory structures to which the multiple hardware modules have access.For example, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and can operate on a resource a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions describedherein. As used herein, “processor-implemented module” refers to ahardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partiallyprocessor-implemented, a processor being an example of hardware. Forexample, at least some of the operations of a method may be performed byone or more processors or processor-implemented modules. Moreover, theone or more processors may also operate to support performance of therelevant operations in a “cloud computing” environment or as a “softwareas a service” (SaaS). For example, at least some of the operations maybe performed by a group of computers (as examples of machines includingprocessors), with these operations being accessible via a network (e.g.,the Internet) and via one or more appropriate interfaces (e.g., anapplication program interface (API)).

The performance of certain of the operations may be distributed amongthe one or more processors, not only residing within a single machine,but deployed across a number of machines. In some example embodiments,the one or more processors or processor-implemented modules may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In other exampleembodiments, the one or more processors or processor-implemented modulesmay be distributed across a number of geographic locations.

Some portions of the subject matter discussed herein may be presented interms of algorithms or symbolic representations of operations on datastored as bits or binary digital signals within a machine memory (e.g.,a computer memory). Such algorithms or symbolic representations areexample of techniques used by those of ordinary skill in the dataprocessing arts to convey the substance of their work to others skilledin the art. As used herein, an “algorithm” is a self-consistent sequenceof operations or similar processing leading to a desired result. In thiscontext, algorithms and operations involve physical manipulation ofphysical quantities. Typically, but not necessarily, such quantities maytake the form of electrical, magnetic, or optical signals capable ofbeing stored, accessed, transferred, combined, compared, or otherwisemanipulated by a machine. It is convenient at times, principally forreasons of common usage, to refer to such signals using words such as“data,” “content,” “bits,” “values,” “elements,” “symbols,”“characters,” “terms,” “numbers,” “numerals,” or the like. These words,however, are merely convenient labels and are to be associated withappropriate physical quantities.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or any suitable combination thereof), registers, orother machine components that receive, store, transmit, or displayinformation. Furthermore, unless specifically stated otherwise, theterms “a” or “an” are herein used, as is common in patent documents, toinclude one or more than one instance. Finally, as used herein, theconjunction “or” refers to a non-exclusive “or,” unless specificallystated otherwise.

What is claimed is:
 1. A system comprising: one or more hardware processors of one or more machines; and a storage medium storing instructions that, when executed by the one or more hardware processors, cause the one or more hardware processors to perform operations comprising: accessing a map of a store; identifying an item to be mapped, the item having a plurality of locations within the store; determining a location of a user device within the store; selecting a first location of the item from among the plurality of locations within the store; causing display of a user interface on the user device that shows the first location of the item and the location of the user device on the map of the store; causing display of a user interface element on the user interface, selection of the user interface element causing a different location of the item from among the plurality of locations to be displayed; receiving the user selection of the user interface element; and in response to receiving the user selection, ceasing display of the first location of the item on the map of the store and causing display of the different location of the item on the map of the store.
 2. The system of claim 1, wherein the operations further comprise: generating a path to the first location, wherein the causing display of the first location includes causing display of the path to the first location on the map.
 3. The system of claim 1, wherein the operations further comprise generating a path to the different location, wherein the causing display of the different location includes causing display of the path to the different location on the map.
 4. The system of claim 1, wherein the operations further comprise: determining, from a list of one or more items associated with a user of the user device, a recommended item that is related to the item; and responsive to the determining the recommended item, causing display of the recommended item on the user interface.
 5. The system of claim 1, wherein the operations further comprise: determining a recommended item based on the location of the user device within the store; and in response to the determining the recommended item, causing display of the recommended item on the map shown in the user interface.
 6. The system of claim 1, wherein identifying the item to be mapped comprises identifying the item from a list of frequently purchased items for a user associated with the user device or a list populated by the user.
 7. A method comprising: accessing a map of a store; identifying an item to be mapped, the item having a plurality of locations within the store; determining a location of a user device within the store; selecting, by a hardware processor, a first location of the item from among the plurality of locations within the store; causing display of a user interface on the user device that shows the first location of the item and the location of the user device on the map of the store; causing display of a user interface element on the user interface, selection of the user interface element causing a different location of the item from among the plurality of locations to be displayed; receiving the user selection of the user interface element; and in response to receiving the user selection, ceasing display of the first location of the item on the map of the store and causing display of the different location of the item on the map of the store.
 8. The method of claim 7, further comprising: generating a path to the first location, wherein the causing display of the first location includes causing display of the path to the first location on the map.
 9. The method of claim 7, further comprising generating a path to the different location, wherein the causing display of the different location includes causing display of the path to the different location on the map.
 10. The method of claim 7, further comprising: determining, from a list of one or more items associated with a user of the user device, a recommended item; and responsive to the determining the recommended item, causing display of the recommended item on the user interface.
 11. The method of claim 7, further comprising: deteimining a recommended item based on the location of the user device within the store; and in response to the determining the recommended item, causing display of the recommended item on the map shown in the user interface.
 12. The method of claim 7, wherein identifying the item to be mapped comprises identifying the item from a list of frequently purchased items for a user associated with the user device or a list populated by the user.
 13. A non-transitory machine-readable medium comprising instructions that, when executed by one or more processors of a machine, cause the machine to perform operations comprising: accessing a map of a store; identifying an item to be mapped the item having a plurality of locations within the store; determining a location of a user device within the store; selecting a first location of the item from among the plurality of locations within the store; causing display of a user interface on the user device that shows the first location of the item and the location of the user device on the map of the store; causing display of a user interface element on the user interface, selection of the user interface element causing a different location of the item from among the plurality of locations to be displayed; receiving the user selection of the user interface element; and in response to receiving the user selection, ceasing display of the first location of the item on the map of the store and causing display of the different location of the item on the map of the store.
 14. The non-transitory machine-readable medium of claim 13, wherein the operations further comprise generating a path to the first location, wherein the causing display of the first location includes causing display of the path to the first location on the map. 